package com.jrx.anytxn.customer.mapper.ext;

import com.jrx.anytxn.customer.entity.CmCustomerExtInfo;
import com.jrx.anytxn.customer.mapper.base.CmCustomerExtInfoMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 客户扩展信息表mapper
 * @author liuzb
 * @date 20123/3/7 17:33
 */
public interface ExtCmCustomerExtInfoMapper extends CmCustomerExtInfoMapper {


    /**
     * 根据条件查询客户扩展信息表
     * @param info
     * @return
     */
    CmCustomerExtInfo selectByConditions(CmCustomerExtInfo info);

    /**
     * 根据条件查询客户扩展信息表
     * @param tenantId
     * @param productActiveFlag
     * @param productIds
     * @return
     */
    List<CmCustomerExtInfo> queryNotActiveCustomers(@Param("customerId") String customerId, @Param("tenantId")String tenantId, @Param("productActiveFlag")String productActiveFlag,
                                                    @Param("productIds")List<String> productIds);

    /**
     * 更新用户产品激活标志
     * @param res
     */
    void updateProductActiveFlag(CmCustomerExtInfo res);

    /**
     * 查询激活的产品ids
     * @param customerId
     * @param tenantId
     * @param productActiveFlags
     * @param productIds
     * @return
     */
    List<String> getActiveProducts(@Param("customerId") String customerId, @Param("tenantId") String tenantId, @Param("productActiveFlags") List<String> productActiveFlags, @Param("productIds") List<String> productIds);

    /**
     * 查询客户扩展信息
     * @param customerId
     * @param tenantId
     * @param productId
     * @return
     */
    List<CmCustomerExtInfo> queryCustomerExtInfos(@Param("customerId") String customerId, @Param("tenantId") String tenantId, @Param("productId") String productId);

    /**
     * 筛选有推荐人的记录列表
     * @param tenantId
     * @param effectiveDate
     * @param expireDate
     * @param productId
     * @return
     */
    List<CmCustomerExtInfo> selectByRecommenderCodeNotNull(@Param("tenantId") String tenantId,
                                                           @Param("effectiveDate") String effectiveDate,
                                                           @Param("expireDate") String expireDate,
                                                           @Param("productId") String productId);
}
